Green Hills工程能够顺利编译以后,链接文件就开始决定代码和数据到底放到芯片的什么位置。这个环节如果只看“链接成功”,很容易漏掉问题,地址范围写错、段被放进不合适的存储区,程序仍可能生成可执行文件,上板后却停在启动阶段。Green Hills的elxr链接器使用.ld链接指令文件描述内存区域和程序段布局,处理这类问题时,工程里的Program Layout、实际生效的.ld文件和map结果要放在一起看。
Green Hills MULTI里的工程和普通桌面IDE不太一样,项目结构往往会和目标处理器、运行环境、链接布局一起确定。工程刚建好时,即使源码只有几个文件,只要目标板、工程层级或者路径配置有一处没对上,构建时就可能连续出现找不到头文件、链接文件缺失、目标架构不匹配等报错。遇到这种情况,与其盯着最后一条错误反复修改,不如从顶层工程和较早出现的构建信息往下查,思路会清楚很多。
Green Hills工具链可以把链接完成的可执行映像转换为Motorola S-record文件,常用于单片机、汽车ECU和嵌入式控制器的Flash烧写。Green Hills怎么生成S-record文件,Green Hills生成S-record文件后地址范围不正确如何调整,重点在于先确认最终可执行文件中的装载地址,再进行格式转换。S-record中的地址通常继承链接结果,如果Flash区域、启动段或数据段在链接阶段已经放错位置,单纯重新生成S-record并不会自动修正地址。